const multer = require('multer');
const fs = require('fs');
const path = require('path');

// 创建存储目录路径
const uploadDir = path.join(__dirname, '../uploads');

// 确保目录存在
if (!fs.existsSync(uploadDir)) {
    fs.mkdirSync(uploadDir, { recursive: true });
}

// 设置存储引擎
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, './uploads/'); // 指定文件上传保存的文件夹
    },
    filename: function (req, file, cb) {
        const ext = path.extname(file.originalname); // 获取文件扩展名
        cb(null, Date.now() + ext); // 使用时间戳 + 扩展名作为文件名
    }
});

// 文件类型检查
const fileFilter = (req, file, cb) => {
    const allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; // 允许的文件类型
    if (allowedTypes.includes(file.mimetype)) {
        cb(null, true); // 文件类型合法，继续上传
    } else {
        cb(new Error('不允许的文件类型'), false); 
    }
};

// 初始化 multer 设置，设置文件限制和文件类型检查
const upload = multer({
    storage,
    fileFilter,
    limits: {
        fileSize: 10 * 1024 * 1024  // 限制10M
    }
});

module.exports = upload;